# -*- coding: utf-8 -*- 
# @project : 《Atcoder》
# @Author : created by bensonrachel on 2021/12/7
# @File : offer59.把数字翻译成字符串.py
# 独自完成 半个小时。
# dp1:0也映射的版本（Acwing 和 leetcode）
# dp2:0不映射的版本（newcoder）

def dp1(s):

    #分类的思想
    dp = [0] * (len(s)+1)
    dp[0] = 1
    dp[1] = 1#初始化
    s = "x"+s
    for i in range(2,len(s)):
        dp[i] += dp[i-1]#第一类，遍历到的自己单独映射
        if int(s[i-1])>2 or int(s[i-1])==0:
            pass
        else:
            if int(s[i-1]) == 2  and int(s[i]) >5 :
                pass
            else:
                dp[i] += dp[i-2]
        #第二类，与前一位一起组合映射，但是有条件，就是组合起来的数要在10和25之间，闭区间。然后就是加上dp[i-2]。
    return dp[-1]

def dp2(s):
    # “130”这种答案为0。
    dp = [0] * (len(s) + 1)

    dp[0] = 1
    if s[0] != '0':
        dp[1] = 1

    s = "x" + s

    for i in range(2, len(s)):

        dp[i] += dp[i - 1]
        if s[i] == '0':
            dp[i] = 0
        if int(s[i - 1]) > 2 or int(s[i - 1]) == 0:
            pass
        else:
            if int(s[i - 1]) == 2 and int(s[i]) > 6:
                pass
            else:
                dp[i] += dp[i - 2]

    return dp[-1]

if __name__ == '__main__':
    num = int(input())
    s = str(num)
    ans = dp2(s)

